// 防抖函数
// 在事件被触发n秒后再执行回调，如果在这n秒内又被触发，则重新计时

function debpunce(fn, delay){
    let time
    return function(...arg){
        if(time){
            clearTimeout(time)
        }else{
            time = setTimeout(()=>{
                fn.call(this,...arg)
            },delay)

        }
    }
}

// 节流函数
// 规定在一个单位时间内，只能触发一次函数。如果这个单位时间内触发多次函数，只有一次生效

function throttle(fn, delay){
    let frist,
        time;
    return function(...args){
        let now = +new Date()
        if(!frist || frist + delay < now){
            fn(...args)
            frist = now;
        } else {
            clearTimeout(time)
            time = setTimeout(() => {
                fn.call(this, ...args)
                frist = now
            }, delay)
        }
    }
}
